招生考试网
学历| 高考 美术高考 考研 自考 成考 专升本 中考 会考 外语| 四六级 职称英语 商务英语 公共英语 日语能力 翻译资格 JTEST
资格| 公务员 报关员 银行从业 司法 导游 教师资格 报关 财会| 会计证 经济师 会计职称 注册会计 税务师 资产评估 审计师
工程| 一建 二建 造价师 造价员 咨询师 监理师 安全师 医学| 卫生资格 执业医师 执业药师 执业护士 | 教案 论文 文档
IT类| 计算机等级 计算机软考 职称计算机 高校计算机 推荐-国家公务员 事业单位招聘 军校国防生 自主招生 艺术特长生 招飞
 3773考试网 - 计算机等级考试 - 试题答案 - 正文

计算机等级考试二级笔试样卷C++语言程序设计

来源:招生考试网 2009-3-9 13:55:46

一、选择题((1)~(35)每小题2分,共70分)

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

 

1)下列选项中不符合良好程序设计风格的是

A)源程序要文档化       B)数据说明的次序要规范化

C)避免滥用goto语句    D)模块设计要保证高耦合、高内聚

 

2)从工程管理角度,软件设计一般分为两步完成,它们是

A)概要设计与详细设计   B)数据设计与接口设计

C)软件结构设计与数据设计   D)过程设计与数据设计

 

3)下列选项中不属于软件生命周期开发阶段任务的是

    A)软件测试     B)概要设计 C)软件维护 D)详细设计

 

4)在数据库系统中,用户所见的数据模式为

    A)概念模式 B)外模式   C)内模式   D)物理模式

 

5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和

A)编码设计 B)测试阶段 C)运行阶段 D)物理设计

 

6设有如下三个关系表

  

R

 

S

 

 

T

 

 

 

A

 

B

C

 

A

B

C

 

 

m

 

1

3

 

m

1

3

 

 

n

 

 

 

 

n

1

3

 

 

 

 

 

 

 

 

 

 

 

下列操作中正确的是

ATRS      BTRS

CTR×S      DTR/S

 

7)下列叙述中正确的是

    A)一个算法的空间复杂度大,则其时间复杂度也必定大

    B)一个算法的空间复杂度大,则其时间复杂度必定小

    C)一个算法的时间复杂度大,则其空间复杂度必定小

D)上述三种说法都不对

 

8)在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为

A63   B64   C6    D7

 

9数据库技术的根本目标是要解决数据的

A)存储问题 B)共享问题 C)安全问题         D)保护问题

 

10)对下列二叉树

进行中序遍历的结果是

AACBDFEG  BACBDFGE  CABDCGEF  DFCADBEG

 

11下列有关内联函数的叙述中,正确的是

A内联函数在调用时发生控制转移

    B)内联函数必须通过关键字inline来定义

    C内联函数是通过编译器来实现的

    D)内联函数函数体的最后一条语句必须是return语句

 

12下列情况中,不会调用拷贝构造函数的是

    A用一个对象去初始化同一类的另一个新对象时

    B将类的一个对象赋值给该类的另一个对象时

    C函数的形参是类的对象,调用函数进行形参和实参结合时

    D函数的返回值是类的对象,函数执行返回调用时

 

13下列有关继承和派生的叙述中,正确的是

A如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员

B派生类的成员函数可以访问基类的所有成员

C基类对象可以赋值给派生类对象

D如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类

 

14下列运算符不能重载为友元函数的是

    A=  ()  [ ]  ->                      B+  -  ++  -- 

    C>  <  >=  <=                         D+=  -=  *=  /=

 

15)关于在调用模板函数时模板实参的使用,下列表述正确的

A)对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略

B)对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略

C)对于虚拟类型参数所对应的模板实参,若能够省略则必须省略

D)对于常规参数所对应的模板实参,任何情况下都不能省略

 

16)下列关于输入流类成员函数getline()的描述中,错误的是

    A)该函数是用来读取键盘输入的字符串的

    B)该函数读取的字符串长度是受限制的

    C)该函数读取字符串时,遇到终止符便停止

    D)该函数读取字符串时,可以包含空格

 

17下列符号中,正确的C++标识符是
A
enum B2b   Cfoo-9    D_32

 

18下列语句中,错误的是

    Aconst int buffer=256;    Bconst double *point;

    Cint const buffer=256;    Ddouble * const point;

 

19if语句的语法格式可描述为:
   
格式1if(<条件>) <语句>

   
格式2if(<条件>) <语句1> else <语句2>
关于上面的语法格式,下列表述中错误的是

    A<条件>部分可以是一个if语句,例如if(if(a==0) )

    B<语句>部分可以是一个if语句,例如if() if()

    C如果在<条件>前加上逻辑非运算符!并交换 <语句1> <语句2> 的位置,语句功能不变

    D<语句>部分可以是一个循环语句,例如if() while()

 

20有如下说明
    int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是

    A*p+9 B*(p+8)   C*p+=9            Dp+8

 

21若有下面的函数调用
fun(a+b, 3, max(n-1, b))

fun的实参个数是

    A3    B4    C5        D6

 

22以下关键字不能用来声明类的访问权限的是

    Apublic   Bstatic   Cprotected        Dprivate

 

23在公有继承的情况下允许派生类直接访问的基类成员包括

    A公有成员     B公有成员和保护成员  

    C公有成员、保护成员和私有成员 D保护成员

 

24关于运算符重载,下列表述中正确的是

    AC++已有的任何运算符都可以重载

B运算符函数的返回类型不能声明为基本数据类型

C在类型转换符函数的定义中不需要声明返回类型

D可以通过运算符重载来创建C++中原来没有的运算符

 

25)关于关键字classtypename下列表述中正确的是

    A程序中的typename都可以替换为class

        B程序中的class都可以替换为typename  

    C在模板形参表中只能用typename来声明参数的类型

    D在模板形参表中只能用classtypename来声明参数的类型

 

26)有如下程序
#include
#include
using namespace std;
int main( ){
    cout<    cout<<12.345<<___________<<34.567;
    return 0;
}
若程序的输出是:
**12.345**34.567
则程序中下划线处遗漏的操作符是     

    Asetprecision(3)  Bfixed    Csetfill('*')     Dsetw(8)

 

27)有如下程序
#include
#include
using namespace std;
class MyClass{
public:
    MyClass( ){ cout<<'A'; }
    MyClass(char c){ cout<    ~MyClass( ){ cout<<'B'; }
};
int main( ){
    MyClass p1,*p2;
    p2=new MyClass('X');
    delete p2 ;
    return 0;
}
执行这个程序屏幕上将显示输出
 AABX         BABXB         CAXB              DAXBB

 

28有如下程序
#include
using namespace std;
int i=1;
class Fun{
public:
    static int i;
    int value( ){ return i-1;}
    int value( )const{ return i+1;}
};
int Fun::i=2;
int main( ){
    int i=3;
    Fun fun1;
    const Fun fun2;
    ____________
    return 0;
}
若程序的输出结果是
123
则程序中下划线处遗漏的语句是

Acout<

Bcout<

Ccout<

Dcout<

 

29有如下程序
#include
using namespace std;
class Obj{
   static int i;
public:
   Obj( ){ i++; }
   ~Obj( ){ i--; }
    static int getVal( ){ return i;}
};
int Obj::i=0;
void f(){Obj ob2; cout<int main( ){
    Obj ob1;
    f( );
    Obj *ob3=new Obj; cout<getVal( );
    delete ob3; cout<    return 0;
}
程序的输出结果是
A
232  B231  C222  D221

 

30有如下程序
#include
using namespace std;
class Base {
protected:
    Base( ){ cout<<'A'; }
    Base(char c){ cout<};
class Derived: public Base{
public:
    Derived( char c ){ cout<};
int main( ){
    Derived d1('B');
    return 0;
}
执行这个程序屏幕上将显示输出

    AB    BBA   CAB       DBB

 

31有如下类定义
class MyBase{
   int k;
public:
   MyBase(int n=0):k(n){ }
   int value( )const{ return k;}
};
class MyDerived: MyBase{
   int j;
public:
   MyDerived(int i): j(i) {}
   int getK( )const{ return k; }
   int getJ( )const{ return j; }
};
编译时发现有一处语法错误对这个错误最准确的描述是

    A)函数getK试图访问基类的私有成员变量k

    B) 在类MyDerived的定义中,基类名MyBase前缺少关键字publicprotectedprivate

    C)类MyDerived 缺少一个无参的构造函数  

    D)类MyDerived的构造函数没有对基类数据成员k进行初始化

 

32在一个派生类对象结束其生命周期时

A先调用派生类的析构函数后调用基类的析构函数      

B先调用基类的析构函数后调用派生类的析构函数  

C如果基类没有定义析构函数,则只调用派生类的析构函数  

D如果派生类没有定义析构函数,则只调用基类的析构函数

 

33)有如下的运算符重载函数定义:
double operator +(int i, int k){ return double(i+k); }

定义有错误,对这个错误最准确的描述是

A+ 只能作为成员函数重载,而这里的 + 是作为非成员函数重载的

    B两个int型参数的和也应该是int型,而这里将 + 的返回类型声明为double  C)没有将运算符重载函数声明为某个类的友元

    DC++已经提供了求两个int型数据之和的运算符 +,不能再定义同样的运算符

 

34语句ofstream f("SALARY.DAT", ios_base::app); 的功能是建立流对象f并试图打开文件SALARY.DATf关联而且

        A若文件存在将其置为空文件若文件不存在打开失败

    B若文件存在将文件指针定位于文件尾若文件不存在建立一个新文件

    C若文件存在,将文件指针定位于文件首;若文件不存在,打开失败

    D若文件存在,打开失败;若文件不存在,建立一个新文件

 

35有如下程序
#include
using namespace std;
class A{
public:
    virtual void func1( ){ cout<<"A1"; }
    void func2( ){ cout<<"A2"; }
};
class B:public A{
public:
    void func1( ){ cout<<"B1"; }
    void func2( ){ cout<<"B2"; }
};
int main( ){
    A *p=new B;
    p->func1( );
    p->func2( );
    return 0;
}
运行此程序屏幕上将显示输出

    A) B1B2     B) A1A2 C) B1A2 D) A1B2

 

二、填空题每空230

    请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。

 

1)下列软件系统结构图

的宽度为  1 

 

2  2  的任务是诊断和改正程序中的错误

 

3一个关系表的行称为   3   

 

4按“先进后出”原则组织数据的数据结构是   4    

 

5)数据结构分为线性结构和非线性结构,带链的队列属于  5    

 

6)若有定义语句:int* a, b;,则变量b的数据类型是   6 

7)已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标为

i1的单元,其中1in。例如,当n4a中原有数据为1234时,则移动后a中元素变为2344。请将语句补充完整:
    for (int i=0; i 
a[i] = a[ 
7  ];

 

8)已知递归函数f的定义如下:
int f(int n)
{
     if (n <= 1) return 1;  //
递归结束情况
     else return n * f(n-2); //
递归}
则函数调用语句f(5)的返回值是 
8 

 

9)创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用缺省构造函数。下列程序涉及到对象数组的创建和单个对象的创建,其输出结果是  9 
#include
using namespace std;
class Foo {
public:
    Foo(int x) { cout << 'A'; }
    Foo() {}
};
int main()
{
    Foo f[3], g(3);
    return 0;
}

 

10)已知下列程序的输出结果是42,请将画线处缺失的部分补充完整。
#include
using namespace std;
class Foo {
    int value;
public:
    Foo( ) : value(0) {}
    void setValue(int value)
    { 
10   = value;  //Foo的数据成员value赋值}
    void print( ) { cout << value; }
};
int main( )
{
    Foo f;
    f.setValue(42);
    f.print();
    return 0;
}

 

11)如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。下列程序没有使用多态机制,其输出结果是  11 
#include
using namespace std;
class Base {
public:
   
void print ( ) { cout << 'B'; }};
class Derived : public Base {
public:
    void print ( ) { cout << 'D'; }};
int main( )
{
    Derived* pd = new Derived( );
    Base* pb = pd;
    pb->print( );
    pd->print( );
    delete pd;
    return 0;
}

 

12)在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承private。已知有如下类定义:
class Base {
protected:
    void fun( ) {}
};
class Derived : Base {
};
Base类中的成员函数fun()Derived类中的访问权限是  12  注意要求填写privateprotectedpublic中的一项)。

13)在MyClass类的定义中,对赋值运算符=进行重载。请将画线处缺失的部分补充完整。
  
13   MyClass::operator=(const MyClass& rhs)
{
    if (this == &rhs) return *this;
    value = rhs.value;
    return *this;

}

   

14)插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到已排序序列中的正确位置。InsertSort类的成员函数sort()实现了插入排序算法。请将画线处缺失的部分补充完整。
class InsertSort{

public:

    InsertSort(int* a0, int n0) :a(a0), n(n0) {} //参数a0是某数组首地址,n是数组元素个数

    void sort( )

    {//此函数假设已排序序列初始化状态只包含a[0],未排序序列初始为a[1]...a[n-1]

        for (int i=1; i

            int t=a[i];

            int j;

            for (  14  ; j>0; --j){

                if (t>=a[j-1]) break;

                a[j]=a[j-1];}

            a[j]=t;}}

protected:

    int *a, n; //指针a用于存放数组首地址,n用于存放数组元素个数

};

 

15)下列程序的输出结果是  15 
#include

using namespace std;

class A {

    int a;

public: 

    A():a(9){}

    virtual void print() const { cout<

};

class B : public A {

    char b;

public:

    B( ){b='S';}

    void print( ) const { cout <

};

void show(A &x){ x.print();}

int main()

{   A d1,*p;

    B d2;

    p=&d2;

    d1.print();

    d2.print();

    p->print();

    show(d1);

    show(d2);

    return 0;}

 


  • 上一个文章:
  • 网站版权与免责声明
    ①由于各方面情况的不断调整与变化,本网所提供的相关信息请以权威部门公布的正式信息为准.
    ②本网转载的文/图等稿件出于非商业性目的,如转载稿涉及版权及个人隐私等问题,请在两周内邮件fjksw@163.com联系.
    最新文章


    | 关于我们 | 联系我们 | 版权申明 | 网站导航 |
    琼ICP备12003406号